# @Time : 2025-03-28 17:16
# @Author : Fioman 
# @Phone : 13149920693

"""
QWidget 可以设置不可见与不可用

窗口上的控件被设置为不可见后被隐藏，但不会被释放，仍占据原先的位置
.setVisible()   设置可见/不可见
.isVisible()    获取可见状态
.hide()         设为不可见，等同于.setVisible(False)
.show()         对于非窗口的控件，等同于.setVisible(True)

对于编辑器、按钮、下拉框等控件可以设置不可用，用户不再能与之交互
.setEnabled()   设置可用/不可用
.isEnabled()    获取可用状态
"""
import sys

from PySide6 import QtWidgets, QtCore


class MyQWidget(QtWidgets.QWidget):
    """
    QWidget-不可见与不可用
    """

    def __init__(self):
        super().__init__()
        self.setWindowTitle("QWidget-不可见与不可用")
        self.resize(800, 600)
        self.setup_ui()

    def setup_ui(self):
        """
        设置界面
        :return:
        """
        self.label = QtWidgets.QLabel("标签", self)
        self.label.resize(200, 200)
        self.label.setStyleSheet("background-color: cyan;")
        self.label.move(50, 50)

        self.textEdit = QtWidgets.QTextEdit(self)
        self.textEdit.move(500, 50)
        self.textEdit.setPlaceholderText("这是一个文本编辑器")

        self.btnSwitchVisible = QtWidgets.QPushButton("切换可见状态", self)
        self.btnSwitchVisible.move(300, 50)

        self.btnSwitchEnabled = QtWidgets.QPushButton("切换可用状态", self)
        self.btnSwitchEnabled.move(300, 150)

        # 按钮绑定事件
        self.btnSwitchVisible.clicked.connect(self.handle_switch_visible)  # type: ignore
        self.btnSwitchEnabled.clicked.connect(self.handle_switch_enabled)  # type: ignore

    @QtCore.Slot()
    def handle_switch_visible(self) -> None:
        """切换可见状态"""
        if self.label.isVisible():
            self.label.setVisible(False)
        else:
            self.label.setVisible(True)

    def handle_switch_enabled(self) -> None:
        """切换可用状态"""
        if self.textEdit.isEnabled():
            self.textEdit.setEnabled(False)
        else:
            self.textEdit.setEnabled(True)


if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    window = MyQWidget()
    window.show()
    sys.exit(app.exec())
